var fs = require("fs");
var router = require("koa-router");

var koaBody = require('koa-body')({
    // 此middleware是用来处理form-data数据的，一般在文件上传的时候会用到
    // multipart默认是不开启的，要使用 multipart 必须在书写接口的时候
    // 在des和method之间插入元素multipart: true 
    // 这样接口才能处理form-data数据，数据包在this.request.body里面
    // 详细看底下注册接口路由时的调用
    multipart: true,
    // 以下是允许传送的数据最大兼容大小，
    // 在nginx代理配置中也要进行一次设置
    jsonLimit: '50mb',
    formLimit: '50mb',
    textLimit: '50mb'
});

var myRouter = new router();

var filePath = __dirname;
var apis = [];
function readFiles(path) {
    var files = fs.readdirSync(path);
    // 通过层级回调，注册接口路由
    if (files) {
        files.forEach((item, index) => {
            if (item.indexOf(".r.js") > -1) {
                var name = item.replace(".r.js", "");
                var obj = require(path + "/" + item);
                var prefix = obj.prefix;
                delete obj.prefix;
                for (key in obj) {
                    for (keys in obj[key]) {
                        apis.push({
                            des: obj[key][keys].des,
                            apiroot: prefix + keys,
                            type: key
                        });
                        obj[key][keys].multipart ? myRouter[key](prefix + keys, koaBody, obj[key][keys].method) : myRouter[key](prefix + keys, obj[key][keys].method);
                        // myRouter.all(prefix + keys, obj[key][keys].method);
                        console.log("api :" + key + ":" + prefix + keys);
                    };
                };
            };
            if (item.indexOf(".") < 0) {
                readFiles.apply(readFiles, [path + "/" + item]);
            };
        });
    };
    return myRouter
};
module.exports = {
    router: readFiles(filePath),
    apis: apis
};
// console.log(apis)